4

一. 相似之处

  1. 它们都是前端优秀的UI库
  2. 使用 Virtual DOM快速渲染
  3. 提供了响应式 (Reactive) 和组件化 (Composable) 的视图组件。
  4. 都支持服务端渲染
  5. 将注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库。

二. 不同之处

  1. 性能方面

    React 组件的状态有变化时,它会以该组件为根,重新渲染整个组件子树,需要使用PureComponent,或是实现shouldComponentUpdate(15)、getDerivedStateFromProps(16)方法进行优化

    Vue 使得开发者不再需要考虑此类优化,从而能够更好地专注于应用本身。

  2. 数据的可变性

    React 它是函数式的思想,把组件设计成纯组件,状态和逻辑通过参数传入,所以在react中,是单向数据流,推崇结合immutable来实现数据不可变。在setState之后会重新走渲染的流程,如果shouldComponentUpdate(15)返回的是true或getDerivedStateFromProps(16)返回的不是null,就继续渲染,如果返回了false,就不会重新渲染,PureComponent就是重写了shouldComponentUpdate,然后在里面作了props和state的浅层对比

    Vue 它是响应式的思想,也就是基于是数据可变的,通过对每一个属性建立Watcher来监听,当属性变化的时候,响应式的更新对应的虚拟dom

  3. 渲染方式

    React 他的思路是all in js,通过js来生成html,设计了jsx,通过js来操作css
    
    Vue 提供了渲染函数,同时也支持JSX,默认推荐的还是模板,任何合乎规范的 HTML 都是合法的Vue模板
    
  4. 声明方式

    React 是类式的写法,api较少

    Vue 是声明式的写法,通过传入各种options,api和参数较多

  5. 扩展功能方式

    React 通过高阶组件来扩展

    Vue 通过Mixins来扩展


高健
104 声望4 粉丝